跳到主要内容

Java 相关规范

Entity 命名规范

一个 Web 后端有各种各样的实体,为了区分这些实体是哪一层的对象最好使用规范的命名标准

分层领域模型规约

  • DO(Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
  • DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
  • BO(Business Object):业务对象。由 Service 层输出的封装业务逻辑的对象。
  • AO(Application Object):应用对象。在 Web 层与 Service 层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
  • VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
  • Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用 Map 类来传输。

领域模型命名规约

1) 数据对象:xxxDO,xxx即为数据表名。

2) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。

3) 展示对象:xxxVO,xxx一般为网页名称。

4) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

泛型字母的含义

平时使用泛型时会发现有很多种字母,其实这些字母不是乱取的,一般使用以下规范

  • T 意味某种类型
  • E 意味 链表、数组里的元素。
  • K 意味 Map(k,v) 里的键值 Key
  • V 意味 返回或映射的值。

泛型的运用要受到如下限制 :

  • 不能使用基本类型的类型参数,可以使用其包装类型代替。
  • 静态成员无法使用类型参数。
  • 不能使用泛型类异常
  • 不能实例化泛型对象或数组 T t = new T(); T[] a=new T

注意比较特殊的是这个 ? 通配符,它表示不限定类型

List<?> // 表示可以存任何类型

// 下界通配符(? super)
List<? super A> // 意思是 List 集合,它可以持有 A 及其父类的实例。

// 上界通配符()
List<? extends A> // 可以包含 A及其子类

Java 的静态泛型方法

private static <T extends Comparable> T max(T t1, T t2) {
return t1.compareTo(t2) > 0 ? t1 : t2;
}